/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;
import model.Usuario;
import model.Viaje;
import java.util.List;
import service.UsuarioService;
import service.ViajeService;
import org.apache.log4j.*;
import org.apache.log4j.xml.DOMConfigurator;

/**
 * @author Fátima Pestana
 * @author Geral Zerpa
 */
public class LoginController extends AbstractCommandController {

    private UsuarioService usuarioService;
    private ViajeService viajeService;
    private static Logger loggers = null;

    public void setViajeService(ViajeService viajeService) {
        this.viajeService = viajeService;
    }

    public void setUsuarioService(UsuarioService usuarioService) {
        this.usuarioService = usuarioService;
    }

    public LoginController() {
        this.setCommandClass(Usuario.class);
    }

    @Override
    protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object form, BindException errors) throws Exception {
        Map model = new HashMap();

        Usuario usuario = (Usuario) form;
        Usuario user2;
        String clave1;
        String clave2;
        clave1 = request.getParameter("claveLogin");
        List user;
        user = usuarioService.getUsuarioLogin(request.getParameter("correoLogin"));

        if (user.isEmpty()) {
            request.getSession().setAttribute("usuarioList", null);
            model.put("cuenta", "La Cuenta e-mail con la que desea ingresar no se encuentra Registrada");
            return new ModelAndView("home", model);
        } else {
            user2 = (Usuario) user.get(0);
            if (user2.getEstatus().equalsIgnoreCase("ACTIVADA")) {
                System.out.println("Apellido" + user2.getApellido());
                clave2 = user2.getClave();


                if (clave1.equals(clave2)) {

                    request.getSession().setAttribute("usuarioList", null);
                    model.put("usuario", user2);
                    List Viajes;
                    Viajes = viajeService.listdeMisViajes(user2.getIdUsuario());
                    model.put("viaje", Viajes);
                    return new ModelAndView("perfilUsuario", model);
                } else {
                    request.getSession().setAttribute("usuarioList", null);
                    model.put("cuenta", "La Clave Ingresada en Invalida");
                    model.put("usuario", usuario);
                    return new ModelAndView("home", model);
                }
            } else {
                request.getSession().setAttribute("usuarioList", null);
                model.put("cuenta", "La Cuenta a la que desea Ingresar se encuentra Desactivada");
                model.put("usuario", usuario);
                return new ModelAndView("home", model);
            }

        }
    }
}
